#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;

int n, ne[N];
int in[N];
bool st[N];
int ret;

void dfs(int k)
{
	st[k] = true;
	ret ++;
	if(!st[ne[k]]) dfs(ne[k]);
}

int main()
{
	cin >> n;
	for(int i = 1;i <= n;i ++)
	{
		cin >> ne[i];
		in[ne[i]] ++;
	}

	queue<int> q;
	for(int i = 1;i <= n;i ++) if(!in[i]) q.push(i);
	while(q.size())
	{
		int f = q.front(); q.pop();
		st[f] = true;
		if(-- in[ne[f]] == 0) q.push(ne[f]);
	}

	int ans = 2e6;
	for(int i = 1;i <= n;i ++)
	{
		if(!st[i])
		{
			ret = 0;
			dfs(i);
			ans = min(ans, ret);
		}
	}
	cout << ans << endl;
	return 0;
}